#ifndef WIDGET_H
#define WIDGET_H

#include"charactor.h"
#include <QWidget>
#include <QWidget>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QPixmap>
#include <QPushButton>
#include <QFont>
#include <QGraphicsProxyWidget>
#include <QLabel>
#include <QMediaPlayer>
#include <QTimer>
#include <QListWidget>
#include <QDialogButtonBox>
#include <QDialog>
#include <QSlider>
#include <QList>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();


protected:
    //按键事件：用键盘控制游戏人物的移动
    void keyPressEvent(QKeyEvent* event);
    void keyReleaseEvent(QKeyEvent* event);


private:
    //设立游戏视图和界面
    QGraphicsView mGameview;//游戏视图
    QGraphicsScene mGameScene;//游戏场景
    QGraphicsScene mStartScene;//开始游戏场景
    QGraphicsScene mGameInterpretScene;//游戏规则说明场景
    QGraphicsScene mGameInstallScene;//设置游戏设置场景

    charActor mRole;//设置游戏人物

    // 设置游戏背景及其他元素
    QGraphicsPixmapItem mStartBGrole; // 设置开始游戏界面的人物
    QGraphicsPixmapItem mStartBackGround;//开始游戏背景
    QGraphicsPixmapItem mStartLine;
    QGraphicsPixmapItem mGameInterpretBackGround;//游戏说明背景
    QGraphicsPixmapItem mGameInstallBackground;//设置游戏设置背景
    QGraphicsPixmapItem mGameBackGround1;//游戏背景1
    QGraphicsPixmapItem mGameBackGround2;//游戏背景2

    //设置背景音乐
    QMediaPlayer* mStartMediaBG;
    QMediaPlayer* mStartMediaBG1;
    QSlider* musicSlider;//设置音乐音量滑动条

    //设置各种计时器
    QTimer* BGPlayTimer;//背景音乐循环播放间隔计时器
    QTimer* mBGmoveTimer;//背景移动计时器
    QTimer* mRoleMoveTimer;//人物移动计时器
    QTimer* jumpTimer;//跳跃计时器

    //按键组合
    QList<int> mKeyList;

    //设置跳跃相关的数据
    bool isJumping;//人物是否跳跃
    bool arriveMax;//判断人物是否到达最高高度
    int jumpHeight;//上升的高度
    int maxJumpHeight;//跳跃的最大高度
    int LeapSpeed;//跳跃的速度
    int roleGroundY;//设置角色位于地面上的坐标

    //用滑动条控制音量函数
    void MusicVolumeSet(int value);

    //加载游戏开始场景
    void LoadStartScene();

    //加载游戏说明场景
    void LoadInterpretScene();

    //加载游戏设置场景
    void LoadInstallScene();

    //加载游戏场景
    void LoadGameScene();

    //设置游戏背景图移动函数
    void BGmove();

    //设置人物移动函数
    void mRoleMove();

    //设置人物跳跃函数
    void jump();




private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

